The Advanced Configuration and Power Interface (ACPI) specification is the primary mechanism for providing system configuration information for many of the newer computer systems. ACPI is neither a software specification nor a hardware specification. ACPI is instead an interface specification. ACPI defines the primary runtime interfaces between the operating system (OS) software and the system firmware/hardware on most of the modem computers, especially ×86 and Itanium processors. The ACPI specification was developed to establish common industry interfaces, enabling robust operating system directed/controlled device and system configuration and power management. Additionally, ACPI is the key element in Operating System directed configuration and Power Management (OSPM). OSPM is a model of power and system management in which the OS plays a central role and uses global information to optimize system behavior at any given time.
ACPI promotes the concepts of power management and energy conservation by transitioning unused devices into lower power states. ACPI also provides the means for an orderly transition from the legacy system (where most hardware system management is done by the ROM BIOS) to the more modern ACPI based systems, while allowing both systems to coexist.
For the reasons stated above, ACPI based computer systems are becoming increasingly popular and system developers and original equipment manufacturers (OEMs) are in a race to include ever increasing value added features in their products using the ACPI standards.
When designing ACPI based devices and systems, developers must follow the ACPI standards and tools. The ACPI tool kit includes the use of hardware registers implemented on the motherboard, Basic Input Output Software (BIOS) interfaces such as system configuration tables, device enumeration and configuration tools, and executable function interfaces also referred to as control methods.
ACPI control methods are the ACPI objects that system firmware presents to the OS to invoke and evaluate the system and devices status, at runtime. In other words, a control method is a definition of how the OS can perform a certain hardware task, such reading a temperature of a thermal zone on a motherboard. In ACPI, by convention, a control method name is limited to only four characters. Conventionally, there have only been two categories of names for a control method. The first category is the reserved names. These names are referred to as reserved names because their usage is reserved by the ACPI specification. Since reserved names are actually owned by the ACPI Special Interest Group (SIG), permission for their use must be obtained from the SIG group. The reserved name convention dictates that each reserved name starts with the underscore character “_” followed by three characters each of which could be a capital letter (for a total of 26 characters), or a number from 0–9.
The other category of names for a control method is the non-reserved names. As with the reserved names, the non-reserved names can only have four characters, each of which may be one of 26 letters, A–Z, or 10 numbers, 0–9. The total number of permutations of the non-reserved names is thus thirty-six to the power of 4 (364).
There are many problems associated with the current ACPI naming convention. In the case of reserved names, ACPI SIG has to register these names as referring to a designated control method. But ACPI SIG is not always in session and, thus, consideration of new reserved names can only happen whenever the SIG committee meets to update the ACPI specification. Additionally, in most cases the request for a reserved name must disclose the reasons for its need. This disclosure may violate trade secrets and raise other confidentiality issues.
Another problem with obtaining reserved names from SIG is related to the fact that SIG's focus is toward the baseline features of the standard. As a result, the SIG's responsibility does not typically extend to the value added features many developers may be pursuing.
Yet another issue with ACPI reserved name convention is that because it is limited to three characters, there is a limited number of names that are available for use as a reserved name. This problem is aggravated by the fact that, in most cases, there is a desire to select reserved names that have some meaningful relation to the function of the control method to which they are referring. Thus the real combination of meaningful reserved names is really less than the limited number of possible permutations the characters allow.
Non-reserved names carry many of the same problems. The valid non-reserved names are limited to a combination of four characters. However, the number of practical permutations is significantly less when one considers the constraints of trying to create acronyms that have a meaningful relationship to a designated control method.
Additionally, due to the nature of the interface evolution as, it is impossible that any one person or organization would have visibility into all the control methods being created.
Furthermore, although the non-reserved names do not need the SIG committee's approval, since there is typically no established communication among the entities that create these new control methods, there exists a real possibility of name collision under the current ACPI infrastructure.
Name collision refers to the occurrence where different entities use the same name for control methods that perform different functions.
In ACPI, a definition block contains information about hardware implementation and configuration details, including data and control methods. A device manufacturer can provide one or more definition blocks in the ACPI tables. In each system, all the definition blocks along with their contents (including the control method names) are placed in a hierarchical tree structure, referred to as an ACPI namespace.
As part of a definition block, a control method may be used to characterize various properties and functionalities of a device. If a device manufacturer designed a device that provides vendor specific value-add features but is otherwise compatible with a generic type of device, ACPI uses _HID object to identify the value-add aspect, while also uses _CID object to identify the compatibility with the generic type. Both _HID and _CID objects live in the same scope used to describe this device in the ACPI name space. All control methods for this device are also in this scope The problem of control method name collision is even more apparent in this case.
The control methods associated with the _HID object are designed and defined by the device manufacturer, while the control methods associated with the _CID object are defined for the generic device type, usually by a standards group. The two definition bodies may happen to choose a name for completely different functions. This name collision is even more likely since, in selecting a control method name, most designers choose names that are meaningful acronyms for the control method. Because all the control methods are listed under the same scope in the ACPI name space for a particular system, name collision becomes a real and increasingly likely possibility.
As previously discussed, currently, there are two approaches to address the name collision problem. The first approach is to use a reserved name to refer to a control method. However, obtaining permission to use a reserved name to exclusively refer to a designated control method requires the authorization of the ACPI SIG committee. As mentioned before, the committee is not always in session, the numbers of reserved names are limited and the request for a reserved name may require the divulgence of trade secrets.
The second approach in using non reserved names is problematic, because it involves using the name and relying on chance that no name collision occurs.
Therefore, alternative mechanisms are needed to refer to control methods used under the ACPI specification that avoid the problem of name collision.